//package com.ry.connection;
//import java.lang.reflect.Field;
//import java.lang.reflect.ParameterizedType;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.Iterator;
//import java.util.List;
//
//import org.json.JSONArray;
//import org.json.JSONException;
//import org.json.JSONObject;
///**
//	json解析帮助类 1.0版 
//	版权河洛 
//	作者:wz	2011年7月27日
//**/
//public class JsonHelper {
//
//	private static final int TEXTNODE=0;//0表示叶子节点类型
//	private static final int OBJECTNODE=1;//1:表示对象节点类型
//	private static final int ARRAYNODE=2;//2:表示数组节点类型
//	private static final int STRINGARGS=3;//3:表示字符数组节点类型
//	/**
//	 * 将Json字符串封装成指定类型的JavaBean
//	 * @param clazz
//	 * @return Object
//	 */
//	public Object jsonToObject(Class clazz,String jsonStr){
//		Object objectInstance=null;
//		try {
//			if(jsonStr==null && "".equals(jsonStr)){
//				return null;
//			}
//			JSONObject jsonObject = new JSONObject(jsonStr);
//			objectInstance=clazz.newInstance();
//			//获得Json字符串中所有的key键,进行迭代扫描
//			Iterator<Object> iteratorKey=jsonObject.keys();
//			HashMap<String, Field> fieldMap=getAnnotactionFiledMap(PropertyNameAnnotaction.class,clazz);
//			while(iteratorKey.hasNext()){
//				String keyItem=(String)iteratorKey.next();
//				Field field= fieldMap.get(keyItem);
//				if(field==null){//不存在该字段
//					continue;
//				}
//				//如果字段是private类型，将字段设置成可访问权限
//				if(!field.isAccessible()){
//					field.setAccessible(true);
//				}
//				String jsonNode=jsonObject.getString(keyItem);
//				if(jsonNode!=null && !"".equals(jsonNode)){
//					//判断当前节点属于哪有类型的节点
//					if(childType(jsonNode)==TEXTNODE){
//						field.set(objectInstance,jsonNode);
//					}else if(childType(jsonNode)==OBJECTNODE){	
//						field.set(objectInstance, jsonToObject(field.getType(),jsonNode));
//					}else if(childType(jsonNode)==ARRAYNODE){
//						//获得List泛型类型
//						ParameterizedType pt = (ParameterizedType)field.getGenericType();
//						field.set(objectInstance, jsonToList((Class)pt.getActualTypeArguments()[0],jsonNode));
//					}else if(childType(jsonNode)==STRINGARGS){
//						//获得String泛型类型
//						field.set(objectInstance, jsonToStringArgs(jsonNode));
//					}
//				}
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//			return null;
//		}
//		return	objectInstance;
//	}
//	/**
//	 * 判断节点类型 
//	 * @param jsonStr
//	 * @return	0:表示叶子节点类型 1:表示对象节点类型 2:表示数组节点类型
//	 */
//	public int childType(String jsonNode){
//		//表示该属性是数组节点
//		if(jsonNode.indexOf("[")==0){
//			if(jsonNode.indexOf("[{")==0){
//				return ARRAYNODE;
//			}else{
//				return STRINGARGS;
//			}
//		}else if(jsonNode.indexOf("{")==0){
//			return OBJECTNODE;
//		}else{
//			return TEXTNODE;
//		}		
//	}
//	/**
//	 * 将json转换成List
//	 * @param clazz
//	 * @return	List
//	 */
//	public List<Object> jsonToList(Class clazz,String jsonStr){
//		List<Object> objects = new ArrayList<Object>();
//	   	try{
//			if(jsonStr==null && "".equals(jsonStr)){
//				return null;
//			}
//			JSONArray jsonArrays=new JSONArray(jsonStr);
//			HashMap<String, Field> fieldMap=getAnnotactionFiledMap(PropertyNameAnnotaction.class,clazz);
//			for(int i=0;i<jsonArrays.length();i++){
//				 JSONObject jsonObject = (JSONObject)jsonArrays.opt(i);
//				 Object objectInstance=clazz.newInstance();
//				 //获得Json字符串中所有的key键,进行迭代扫描
//				 Iterator<Object> iteratorKey=jsonObject.keys();
//				 while(iteratorKey.hasNext()){
//					String keyItem=(String)iteratorKey.next();
//					Field field= fieldMap.get(keyItem);
//					if(field==null){//不存在该字段
//						continue;
//					}
//					//如果字段是private类型，将字段设置成可访问权限
//					if(!field.isAccessible()){
//						field.setAccessible(true);
//					}
//					String jsonNode=jsonObject.getString(keyItem);
//					if(jsonNode!=null && !"".equals(jsonNode)){
//						//判断当前节点属于哪有类型的节点
//						if(childType(jsonNode)==TEXTNODE){
//							field.set(objectInstance,jsonNode);
//						}else if(childType(jsonNode)==OBJECTNODE){	
//							field.set(objectInstance, jsonToObject(field.getType(),jsonNode));
//						}else if(childType(jsonNode)==ARRAYNODE){
//							//获得List泛型类型
//							ParameterizedType pt = (ParameterizedType)field.getGenericType();
//							field.set(objectInstance, jsonToList((Class)pt.getActualTypeArguments()[0],jsonNode));
//						}else if(childType(jsonNode)==STRINGARGS){
//							field.set(objectInstance, jsonToStringArgs(jsonNode));
//						}
//					}
//				 }
//				 objects.add(objectInstance);
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//		return	objects;
//	}
//	
//	/**
//	 * 将指定注解的字段封装成Map集合  
//	 * @param annotactionClazz
//	 * @param Clazz
//	 * @return
//	 */
//	private HashMap<String, Field> getAnnotactionFiledMap(Class annotactionClazz,Class Clazz){
//		HashMap<String, Field> fieldMap=new HashMap<String, Field>(); 
//		Field[] fields=Clazz.getDeclaredFields();
//		//遍历所有的字段
//		for(Field field:fields){
//			//判断该字段头上是存在注解,如果存在放在Map中
//			if(field.isAnnotationPresent(annotactionClazz)){
//				PropertyNameAnnotaction pna=field.getAnnotation(annotactionClazz);
//				String propertyName=pna.propertyName();
//				fieldMap.put(propertyName, field);
//			}
//		}
//		return fieldMap;
//	}
//	
//	/**
//	 * 根据JSON字符串的得到相应的STRING数组
//	 * @param jsonStr
//	 * @return
//	 */
//	private String[] jsonToStringArgs(String jsonStr){
//
//		String[] rsObj = null;
//		try {
//			
//			JSONArray jsonArrays = new JSONArray(jsonStr);
//			if(jsonArrays!=null && jsonArrays.length()>0){
//				rsObj = new String[jsonArrays.length()];
//				for(int i=0;i<jsonArrays.length();i++){
//					if(jsonArrays.opt(i)!=null){
//						rsObj[i] = (String)jsonArrays.opt(i);
//					}else{
//						rsObj[i] = "";
//					}
//					
//				}
//			}
//
//		} catch (JSONException e) {
//			e.printStackTrace();
//			return null;
//		}		
//		return rsObj;
//	}
//}
